package com.ericsson.springauth.service;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * Created by IntelliJ IDEA.
 * User: lbonacina
 * Date: 28/01/11
 * Time: 18.55
 * Implementazione di default per un Service, tutte le implementazione concrete *Impl
 * derivano da questa classe.
 * fornisce l'accesso alla Session di Hibernate, gi� settata e pronta per essere usata
 * tramite il metodo getCurrentSession() (o direttamente alla SessionFactory se necessario)
 * fornisce anche l'accesso ad un oggetto di log.
 */
public class ServiceDefaultImpl {
// ------------------------------ FIELDS ------------------------------

    protected Logger log = Logger.getLogger(this.getClass().getName());

    @Autowired
    private SessionFactory sessionFactory;

    private Session session = null;

// --------------------- GETTER / SETTER METHODS ---------------------

    public SessionFactory getSessionFactory() {
        return sessionFactory;
    }

    public void setSessionFactory(SessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

// -------------------------- OTHER METHODS --------------------------

    public Session getCurrentSession() {

        return (session != null) ? session : this.sessionFactory.getCurrentSession();
    }

    public void setCurrentSession(Session session) {
        this.session = session;
    }

}
